{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Modeling and Simulation in Python\n",
    "\n",
    "Comparison of the penny models from Chapters 1, 20, and 21\n",
    "\n",
    "Copyright 2018 Allen Downey\n",
    "\n",
    "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Configure Jupyter so figures appear in the notebook\n",
    "%matplotlib inline\n",
    "\n",
    "# Configure Jupyter to display the assigned value after an assignment\n",
    "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
    "\n",
    "# import functions from the modsim.py module\n",
    "from modsim import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### With air resistance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next we'll add air resistance using the [drag equation](https://en.wikipedia.org/wiki/Drag_equation)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "I'll start by getting the units we'll need from Pint."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "kilogram"
      ],
      "text/latex": [
       "$\\mathrm{kilogram}$"
      ],
      "text/plain": [
       "<Unit('kilogram')>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = UNITS.meter\n",
    "s = UNITS.second\n",
    "kg = UNITS.kilogram"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now I'll create a `Params` object to contain the quantities we need.  Using a Params object is convenient for grouping the system parameters in a way that's easy to read (and double-check)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>height</th>\n",
       "      <td>381 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>v_init</th>\n",
       "      <td>0.0 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>g</th>\n",
       "      <td>9.8 meter / second ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mass</th>\n",
       "      <td>0.0025 kilogram</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>diameter</th>\n",
       "      <td>0.019 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>rho</th>\n",
       "      <td>1.2 kilogram / meter ** 3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>v_term</th>\n",
       "      <td>18.0 meter / second</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "height                      381 meter\n",
       "v_init             0.0 meter / second\n",
       "g             9.8 meter / second ** 2\n",
       "mass                  0.0025 kilogram\n",
       "diameter                  0.019 meter\n",
       "rho         1.2 kilogram / meter ** 3\n",
       "v_term            18.0 meter / second\n",
       "dtype: object"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "params = Params(height = 381 * m,\n",
    "                v_init = 0 * m / s,\n",
    "                g = 9.8 * m/s**2,\n",
    "                mass = 2.5e-3 * kg,\n",
    "                diameter = 19e-3 * m,\n",
    "                rho = 1.2 * kg/m**3,\n",
    "                v_term = 18 * m / s)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can pass the `Params` object `make_system` which computes some additional parameters and defines `init`.\n",
    "\n",
    "`make_system` uses the given radius to compute `area` and the given `v_term` to compute the drag coefficient `C_d`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_system(params):\n",
    "    \"\"\"Makes a System object for the given conditions.\n",
    "    \n",
    "    params: Params object\n",
    "    \n",
    "    returns: System object\n",
    "    \"\"\"\n",
    "    unpack(params)\n",
    "    \n",
    "    area = np.pi * (diameter/2)**2\n",
    "    C_d = 2 * mass * g / (rho * area * v_term**2)\n",
    "    init = State(y=height, v=v_init)\n",
    "    t_end = 30 * s\n",
    "    \n",
    "    return System(params, area=area, C_d=C_d, \n",
    "                  init=init, t_end=t_end)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's make a `System`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>height</th>\n",
       "      <td>381 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>v_init</th>\n",
       "      <td>0.0 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>g</th>\n",
       "      <td>9.8 meter / second ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mass</th>\n",
       "      <td>0.0025 kilogram</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>diameter</th>\n",
       "      <td>0.019 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>rho</th>\n",
       "      <td>1.2 kilogram / meter ** 3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>v_term</th>\n",
       "      <td>18.0 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>area</th>\n",
       "      <td>0.0002835287369864788 meter ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C_d</th>\n",
       "      <td>0.4445009981135434 dimensionless</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>init</th>\n",
       "      <td>y             381 meter\n",
       "v    0.0 meter / secon...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_end</th>\n",
       "      <td>30 second</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "height                                              381 meter\n",
       "v_init                                     0.0 meter / second\n",
       "g                                     9.8 meter / second ** 2\n",
       "mass                                          0.0025 kilogram\n",
       "diameter                                          0.019 meter\n",
       "rho                                 1.2 kilogram / meter ** 3\n",
       "v_term                                    18.0 meter / second\n",
       "area                         0.0002835287369864788 meter ** 2\n",
       "C_d                          0.4445009981135434 dimensionless\n",
       "init        y             381 meter\n",
       "v    0.0 meter / secon...\n",
       "t_end                                               30 second\n",
       "dtype: object"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "system = make_system(params)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's the slope function, including acceleration due to gravity and drag."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slope_func(state, t, system):\n",
    "    \"\"\"Compute derivatives of the state.\n",
    "    \n",
    "    state: position, velocity\n",
    "    t: time\n",
    "    system: System object\n",
    "    \n",
    "    returns: derivatives of y and v\n",
    "    \"\"\"\n",
    "    y, v = state\n",
    "    rho, C_d, area = system.rho, system.C_d, system.area\n",
    "    mass = system.mass\n",
    "    g = system.g\n",
    "    \n",
    "    f_drag = rho * v**2 * C_d * area / 2\n",
    "    a_drag = f_drag / mass\n",
    "    \n",
    "    dydt = v\n",
    "    dvdt = -g + a_drag\n",
    "    \n",
    "    return dydt, dvdt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As always, let's test the slope function with the initial conditions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0 <Unit('meter / second')>, -9.8 <Unit('meter / second ** 2')>)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "slope_func(system.init, 0, system)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can use the same event function as in the previous chapter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def event_func(state, t, system):\n",
    "    \"\"\"Return the height of the penny above the sidewalk.\n",
    "    \"\"\"\n",
    "    y, v = state\n",
    "    return y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And then run the simulation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>success</th>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>message</th>\n",
       "      <td>A termination event occurred.</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "success                             True\n",
       "message    A termination event occurred.\n",
       "dtype: object"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results, details = run_ode_solver(system, slope_func, events=event_func)\n",
    "details"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here are the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "      <th>v</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.000000</th>\n",
       "      <td>381 meter</td>\n",
       "      <td>0.0 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.300000</th>\n",
       "      <td>380.559 meter</td>\n",
       "      <td>-2.913855777777778 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.600000</th>\n",
       "      <td>379.2553998560887 meter</td>\n",
       "      <td>-5.676321799192868 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.900000</th>\n",
       "      <td>377.15535917269835 meter</td>\n",
       "      <td>-8.166374221525693 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.200000</th>\n",
       "      <td>374.35521895425103 meter</td>\n",
       "      <td>-10.311720070623485 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.500000</th>\n",
       "      <td>370.96543201556204 meter</td>\n",
       "      <td>-12.090247228814045 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.800000</th>\n",
       "      <td>367.09631700871336 meter</td>\n",
       "      <td>-13.518952241005275 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2.100000</th>\n",
       "      <td>362.8483908201627 meter</td>\n",
       "      <td>-14.638370780659383 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2.400000</th>\n",
       "      <td>358.3075410597563 meter</td>\n",
       "      <td>-15.498718976734299 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2.700000</th>\n",
       "      <td>353.54387826134905 meter</td>\n",
       "      <td>-16.150356583635052 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.000000</th>\n",
       "      <td>348.6127953660127 meter</td>\n",
       "      <td>-16.638537486499228 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.300000</th>\n",
       "      <td>343.5570453854738 meter</td>\n",
       "      <td>-17.001300692432412 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.600000</th>\n",
       "      <td>338.4090764843133 meter</td>\n",
       "      <td>-17.269254229780273 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.900000</th>\n",
       "      <td>333.1932204915177 meter</td>\n",
       "      <td>-17.466306425809933 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4.200000</th>\n",
       "      <td>327.92756526232625 meter</td>\n",
       "      <td>-17.610750940510915 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4.500000</th>\n",
       "      <td>322.62547300477706 meter</td>\n",
       "      <td>-17.716383148064374 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4.800000</th>\n",
       "      <td>317.2967703203745 meter</td>\n",
       "      <td>-17.793499099432996 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5.100000</th>\n",
       "      <td>311.94866008776336 meter</td>\n",
       "      <td>-17.84972641814655 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5.400000</th>\n",
       "      <td>306.586409493623 meter</td>\n",
       "      <td>-17.890685845112163 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5.700000</th>\n",
       "      <td>301.21386361121205 meter</td>\n",
       "      <td>-17.920503377109643 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6.000000</th>\n",
       "      <td>295.8338258653892 meter</td>\n",
       "      <td>-17.94219936904363 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6.300000</th>\n",
       "      <td>290.448338371113 meter</td>\n",
       "      <td>-17.957980371929946 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6.600000</th>\n",
       "      <td>285.05888770100324 meter</td>\n",
       "      <td>-17.96945605745975 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6.900000</th>\n",
       "      <td>279.66655550040554 meter</td>\n",
       "      <td>-17.977799435972766 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7.200000</th>\n",
       "      <td>274.2721285128205 meter</td>\n",
       "      <td>-17.9838646561385 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7.500000</th>\n",
       "      <td>268.87617883849407 meter</td>\n",
       "      <td>-17.988273335755586 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7.800000</th>\n",
       "      <td>263.47912241839214 meter</td>\n",
       "      <td>-17.99147768251337 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8.100000</th>\n",
       "      <td>258.08126161893864 meter</td>\n",
       "      <td>-17.99380656697738 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8.400000</th>\n",
       "      <td>252.68281622283766 meter</td>\n",
       "      <td>-17.99549911112701 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8.700000</th>\n",
       "      <td>247.28394597351817 meter</td>\n",
       "      <td>-17.996729153771838 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13.800000</th>\n",
       "      <td>155.48693674391328 meter</td>\n",
       "      <td>-17.99998562459072 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14.100000</th>\n",
       "      <td>150.08694035214128 meter</td>\n",
       "      <td>-17.99998955354878 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14.400000</th>\n",
       "      <td>144.6869429742007 meter</td>\n",
       "      <td>-17.99999240867943 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14.700000</th>\n",
       "      <td>139.28694487962224 meter</td>\n",
       "      <td>-17.999994483471404 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15.000000</th>\n",
       "      <td>133.88694626427096 meter</td>\n",
       "      <td>-17.999995991199814 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15.300000</th>\n",
       "      <td>128.48694727047982 meter</td>\n",
       "      <td>-17.99999708684937 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15.600000</th>\n",
       "      <td>123.08694800168064 meter</td>\n",
       "      <td>-17.99999788304576 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15.900000</th>\n",
       "      <td>117.68694853303616 meter</td>\n",
       "      <td>-17.999998461632856 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16.200000</th>\n",
       "      <td>112.28694891916632 meter</td>\n",
       "      <td>-17.999998882085677 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16.500000</th>\n",
       "      <td>106.88694919976282 meter</td>\n",
       "      <td>-17.999999187624077 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16.800000</th>\n",
       "      <td>101.48694940366919 meter</td>\n",
       "      <td>-17.99999940965544 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17.100000</th>\n",
       "      <td>96.08694955184568 meter</td>\n",
       "      <td>-17.999999571003165 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17.400000</th>\n",
       "      <td>90.68694965952389 meter</td>\n",
       "      <td>-17.999999688252768 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17.700000</th>\n",
       "      <td>85.28694973777245 meter</td>\n",
       "      <td>-17.99999977345675 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18.000000</th>\n",
       "      <td>79.8869497946348 meter</td>\n",
       "      <td>-17.999999835373536 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18.300000</th>\n",
       "      <td>74.48694983595604 meter</td>\n",
       "      <td>-17.999999880367778 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18.600000</th>\n",
       "      <td>69.08694986598373 meter</td>\n",
       "      <td>-17.999999913064592 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18.900000</th>\n",
       "      <td>63.686949887804516 meter</td>\n",
       "      <td>-17.999999936825006 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19.200000</th>\n",
       "      <td>58.28694990366144 meter</td>\n",
       "      <td>-17.999999954091432 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19.500000</th>\n",
       "      <td>52.88694991518449 meter</td>\n",
       "      <td>-17.999999966638754 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19.800000</th>\n",
       "      <td>47.48694992355816 meter</td>\n",
       "      <td>-17.999999975756754 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20.100000</th>\n",
       "      <td>42.08694992964321 meter</td>\n",
       "      <td>-17.999999982382704 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20.400000</th>\n",
       "      <td>36.686949934065154 meter</td>\n",
       "      <td>-17.999999987197707 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20.700000</th>\n",
       "      <td>31.28694993727853 meter</td>\n",
       "      <td>-17.999999990696715 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21.000000</th>\n",
       "      <td>25.886949939613654 meter</td>\n",
       "      <td>-17.999999993239406 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21.300000</th>\n",
       "      <td>20.486949941310563 meter</td>\n",
       "      <td>-17.99999999508715 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21.600000</th>\n",
       "      <td>15.086949942543686 meter</td>\n",
       "      <td>-17.99999999642989 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21.900000</th>\n",
       "      <td>9.686949943439785 meter</td>\n",
       "      <td>-17.99999999740564 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22.200000</th>\n",
       "      <td>4.286949944090969 meter</td>\n",
       "      <td>-17.999999998114706 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22.438164</th>\n",
       "      <td>0.0 meter</td>\n",
       "      <td>-17.99999999852377 meter / second</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>76 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                  y                                   v\n",
       "0.000000                  381 meter                  0.0 meter / second\n",
       "0.300000              380.559 meter   -2.913855777777778 meter / second\n",
       "0.600000    379.2553998560887 meter   -5.676321799192868 meter / second\n",
       "0.900000   377.15535917269835 meter   -8.166374221525693 meter / second\n",
       "1.200000   374.35521895425103 meter  -10.311720070623485 meter / second\n",
       "1.500000   370.96543201556204 meter  -12.090247228814045 meter / second\n",
       "1.800000   367.09631700871336 meter  -13.518952241005275 meter / second\n",
       "2.100000    362.8483908201627 meter  -14.638370780659383 meter / second\n",
       "2.400000    358.3075410597563 meter  -15.498718976734299 meter / second\n",
       "2.700000   353.54387826134905 meter  -16.150356583635052 meter / second\n",
       "3.000000    348.6127953660127 meter  -16.638537486499228 meter / second\n",
       "3.300000    343.5570453854738 meter  -17.001300692432412 meter / second\n",
       "3.600000    338.4090764843133 meter  -17.269254229780273 meter / second\n",
       "3.900000    333.1932204915177 meter  -17.466306425809933 meter / second\n",
       "4.200000   327.92756526232625 meter  -17.610750940510915 meter / second\n",
       "4.500000   322.62547300477706 meter  -17.716383148064374 meter / second\n",
       "4.800000    317.2967703203745 meter  -17.793499099432996 meter / second\n",
       "5.100000   311.94866008776336 meter   -17.84972641814655 meter / second\n",
       "5.400000     306.586409493623 meter  -17.890685845112163 meter / second\n",
       "5.700000   301.21386361121205 meter  -17.920503377109643 meter / second\n",
       "6.000000    295.8338258653892 meter   -17.94219936904363 meter / second\n",
       "6.300000     290.448338371113 meter  -17.957980371929946 meter / second\n",
       "6.600000   285.05888770100324 meter   -17.96945605745975 meter / second\n",
       "6.900000   279.66655550040554 meter  -17.977799435972766 meter / second\n",
       "7.200000    274.2721285128205 meter    -17.9838646561385 meter / second\n",
       "7.500000   268.87617883849407 meter  -17.988273335755586 meter / second\n",
       "7.800000   263.47912241839214 meter   -17.99147768251337 meter / second\n",
       "8.100000   258.08126161893864 meter   -17.99380656697738 meter / second\n",
       "8.400000   252.68281622283766 meter   -17.99549911112701 meter / second\n",
       "8.700000   247.28394597351817 meter  -17.996729153771838 meter / second\n",
       "...                             ...                                 ...\n",
       "13.800000  155.48693674391328 meter   -17.99998562459072 meter / second\n",
       "14.100000  150.08694035214128 meter   -17.99998955354878 meter / second\n",
       "14.400000   144.6869429742007 meter   -17.99999240867943 meter / second\n",
       "14.700000  139.28694487962224 meter  -17.999994483471404 meter / second\n",
       "15.000000  133.88694626427096 meter  -17.999995991199814 meter / second\n",
       "15.300000  128.48694727047982 meter   -17.99999708684937 meter / second\n",
       "15.600000  123.08694800168064 meter   -17.99999788304576 meter / second\n",
       "15.900000  117.68694853303616 meter  -17.999998461632856 meter / second\n",
       "16.200000  112.28694891916632 meter  -17.999998882085677 meter / second\n",
       "16.500000  106.88694919976282 meter  -17.999999187624077 meter / second\n",
       "16.800000  101.48694940366919 meter   -17.99999940965544 meter / second\n",
       "17.100000   96.08694955184568 meter  -17.999999571003165 meter / second\n",
       "17.400000   90.68694965952389 meter  -17.999999688252768 meter / second\n",
       "17.700000   85.28694973777245 meter   -17.99999977345675 meter / second\n",
       "18.000000    79.8869497946348 meter  -17.999999835373536 meter / second\n",
       "18.300000   74.48694983595604 meter  -17.999999880367778 meter / second\n",
       "18.600000   69.08694986598373 meter  -17.999999913064592 meter / second\n",
       "18.900000  63.686949887804516 meter  -17.999999936825006 meter / second\n",
       "19.200000   58.28694990366144 meter  -17.999999954091432 meter / second\n",
       "19.500000   52.88694991518449 meter  -17.999999966638754 meter / second\n",
       "19.800000   47.48694992355816 meter  -17.999999975756754 meter / second\n",
       "20.100000   42.08694992964321 meter  -17.999999982382704 meter / second\n",
       "20.400000  36.686949934065154 meter  -17.999999987197707 meter / second\n",
       "20.700000   31.28694993727853 meter  -17.999999990696715 meter / second\n",
       "21.000000  25.886949939613654 meter  -17.999999993239406 meter / second\n",
       "21.300000  20.486949941310563 meter   -17.99999999508715 meter / second\n",
       "21.600000  15.086949942543686 meter   -17.99999999642989 meter / second\n",
       "21.900000   9.686949943439785 meter   -17.99999999740564 meter / second\n",
       "22.200000   4.286949944090969 meter  -17.999999998114706 meter / second\n",
       "22.438164                 0.0 meter   -17.99999999852377 meter / second\n",
       "\n",
       "[76 rows x 2 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The final height is close to 0, as expected.\n",
    "\n",
    "Interestingly, the final velocity is not exactly terminal velocity, which suggests that there are some numerical errors.\n",
    "\n",
    "We can get the flight time from `results`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "22.438163885803732"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t_sidewalk = get_last_label(results)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's the plot of position as a function of time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_position(results):\n",
    "    plot(results.y)\n",
    "    decorate(xlabel='Time (s)',\n",
    "             ylabel='Position (m)')\n",
    "    \n",
    "plot_position(results)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And velocity as a function of time:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_velocity(results):\n",
    "    plot(results.v, color='C1', label='v')\n",
    "        \n",
    "    decorate(xlabel='Time (s)',\n",
    "             ylabel='Velocity (m/s)')\n",
    "    \n",
    "plot_velocity(results)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From an initial velocity of 0, the penny accelerates downward until it reaches terminal velocity; after that, velocity is constant."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Back to Chapter 1\n",
    "\n",
    "We have now considered three models of a falling penny:\n",
    "\n",
    "1.  In Chapter 1, we started with the simplest model, which includes gravity and ignores drag.\n",
    "\n",
    "2.  As an exercise in Chapter 1, we did a \"back of the envelope\" calculation assuming constant acceleration until the penny reaches terminal velocity, and then constant velocity until it reaches the sidewalk.\n",
    "\n",
    "3.  In this chapter, we model the interaction of gravity and drag during the acceleration phase.\n",
    "\n",
    "We can compare the models by plotting velocity as a function of time.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "22.4"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g = 9.8\n",
    "v_term = 18\n",
    "t_end = 22.4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = linspace(0, t_end, 201)\n",
    "model1 = -g * ts;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "model2 = TimeSeries()\n",
    "for t in ts:\n",
    "    v = -g * t\n",
    "    if v < -v_term:\n",
    "        model2[t] = -v_term\n",
    "    else:\n",
    "        model2[t] = v"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "results, details = run_ode_solver(system, slope_func, events=event_func, max_step=0.5)\n",
    "model3 = results.v;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(ts, model1, label='model1', color='gray')\n",
    "plot(model2, label='model2', color='C0')\n",
    "plot(model3, label='model3', color='C1')\n",
    "        \n",
    "decorate(xlabel='Time (s)',\n",
    "         ylabel='Velocity (m/s)')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deXycZb3//9dM9n1rky4spSwfChaklK2yLyoKgiweFkGPIJsKCnh+KJ4jKBzhCIiKfgFRVOTIAQVFNkEERUFo2bQsH2iB7k3apG3SZp+Z3x/3pEzTSTJtZ0vyfj4e88jMNdd935/JY5pPr+u+llAsFkNERCTfhHMdgIiISDJKUCIikpeUoEREJC8pQYmISF4qzHUA+cTMSoD9gBVAJMfhiIiMBwXAZGCuu/ckvqEEtan9gGdyHYSIyDh0CPC3xAIlqE2tALj77ruZNGlSrmMRERnzVq5cyZlnngnxv7+JlKA2FQGYNGkS2223Xa5jEREZTza7raJBEiIikpeUoEREJC8pQYmISF5SghIRkbw0agZJmNnewK3AXsA7wOfcfW6SejsAPwUOBFqAL7n7I9mMVURGj/b2dlpaWujr68t1KGNSUVERjY2NVFdXb/GxoyJBmVkx8HvgZuBQ4GTgcTPb0d3bB1W/B3gO+DhwMPA7M/ugu7+TzZhFJP+1t7fT3NzM1KlTKSsrIxQK5TqkMSUWi9HV1cWyZcsAtjhJjZYuvsOBIne/2d373P0e4DXg3xIrmdluwGzgv9y9193/DDwInJONINe3t7PkrbeycSkRSYOWlhamTp1KeXm5klMGhEIhysvLmTp1Ki0tLVt8/GhJUHsAbwwqexOYmaTeYnffMEK9jHjx9mvpvvfrrHhvUTYuJyLbqK+vj7KyslyHMeaVlZVtVRfqaElQlUDnoLJOoHwr62VEKBahIBRj5dtvZuNyIpIGajll3tb+jkdLgtoADP5vTjmwfivrZUSkvAGAztaV2biciMiYNloS1OuADSrbPV4+uN4OZlY2Qr2MKKxpBKBvbXM2Liciss1++MMfctFFF41Yb+nSpZgZ7e3BuLS///3vnHTSScyaNYtjjjmGe+65J+2xjYpRfMBTQMjMvgLcQjCKby/ggcRK7u5m9ipwrZl9DZgDnAAclI0gSxuaYBGEN7Rm43IiIjmxYsUKvvSlL3H99ddz1FFHMX/+fM4991ymTp3KIYcckrbrjIoWlLv3AscSJKY24ErgRHdfZWZnmlliF97JwAyCOVB3AOe4+/xsxFkzaSoAJT1rsnE5ERlHli5dyuzZs7nrrrv40Ic+xP77789dd93F3XffzSGHHMIBBxzAz3/+cwCeffZZTj75ZGbNmsXxxx/PY489tsl5PvOZz7DPPvtw8skns3jx4k2uc++99/KRj3yE/fbbj3POOYclS5ZsFsuyZcs47rjjOOaYYwiHw+y1117sv//+vPTSS2n9zKOlBUU8yRycpPxu4O6E10sIklnWTdxue9YAVdF2YrGYbr6KjDJX3/EP5r2RvS762TOa+Oa5B6Zcv6Ojg/nz5/PUU0/xpz/9icsvv5wTTjiBJ598kmeeeYYvfelLzJw5k/PPP5/rr7+eD3/4w8ydO5eLLrqIiRMnsu+++3LJJZewxx578JOf/AR355xzzmH27NkAPP744/zgBz/gtttuY9ddd+XOO+/k85//PA899NCmcc+evfEYgLVr1zJv3jxOOOGE9Pxi4kZFC2q0qGmopztWRGmoj441a3MdjoiMQRdddBHFxcUcdNBBRCIRzj77bIqLizniiCOIRCL87Gc/44ADDuBjH/sYhYWFHHTQQRx//PE88MADLFmyhPnz53PppZdSXFzMzJkzN0kq9957L2effTZ77rknxcXFnHfeeaxfv57nn39+yHg6Ojq48MIL2XvvvTnqqKPS+llHTQtqNAiHw3SEqimlldVLl1BdX5frkERkC2xJayZXamtrASgoKACgqqoKCP7+AHR3dzN16tRNjtluu+14/vnnWbVqFSUlJdTV1W3y3sBKD8uXL+fHP/4xt99++8b3+/r6WL58OTvuuONmsbz77rtcdNFF7LLLLtxwww0bY0gXJag06y6pg55W1q5YCnvtletwRGSMGenWwezZs5k3b94mZUuWLGHChAk0NTXR09NDa2srDQ3BtJjm5ve7NBsbGzn77LM57bTTNpYtXLiQKVOm0Nq66eCvga7D0047jUsvvTQjtzTUxZdm0fJ6ALo0F0pEcuDggw9m3rx5PPLII0QiEZ577jn+8Ic/cPzxxzN16lT2339/rr/+erq6unjzzTe5//77Nx574okncuedd7Jw4UJisRh/+MMfOOGEEzZJYgCLFy/m/PPP5+KLL+ayyy7L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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(model2, label='model2', color='C0')\n",
    "plot(results.v, label='model3', color='C1')\n",
    "        \n",
    "decorate(xlabel='Time (s)',\n",
    "         ylabel='Velocity (m/s)')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Clearly Model 1 is very different from the other two, which are almost identical except during the transition from constant acceleration to constant velocity.\n",
    "\n",
    "We can also compare the predictions:\n",
    "\n",
    "* According to Model 1, the penny takes 8.8 seconds to reach the sidewalk, and lands at 86 meters per second.\n",
    "\n",
    "* According to Model 2, the penny takes 22.1 seconds and lands at terminal velocity, 18 m/s.\n",
    "\n",
    "* According to Model 3, the penny takes 22.4 seconds and lands at terminal velocity.\n",
    "\n",
    "So what can we conclude?  The results from Model 1 are clearly unrealistic; it is probably not a useful model of this system.  The results from Model 2 are off by about 1%, which is probably good enough for most purposes.\n",
    "\n",
    "In fact, our estimate of the terminal velocity could by off by 10% or more, and the figure we are using for the height of the Empire State Building is not precise either.\n",
    "\n",
    "So the difference between Models 2 and 3 is swamped by other uncertainties."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
